return {
  -- packer
  {"wbthomason/packer.nvim"},
  -- orgmode
  {
    "kristijanhusak/orgmode.nvim",
    opt = true,
    ft = "org",
    config = function ()
      require('orgmode').setup({
        org_agenda_file = { '~/Sync/org/*'},
        org_default_notes_file = '~/Sync/org/refile.org'
      })
    end
  },
  {
    'folke/which-key.nvim',
    config = function ()
      require('which-key').setup {}
    end,
    event = "BufWinEnter",
  },
  -- ui
  {
    'sainnhe/edge',
    opt = false,
    config = function ()
      vim.cmd [[set background=dark]]
      vim.g.edge_style = "aura"
      vim.g.edge_enable_italic = 1
      vim.g.edge_disable_italic_comment = 1
      -- vim.g.edge_show_eob = 1
      -- vim.g.edge_better_performance = 1
    end
  },
  {
    'hoob3rt/lualine.nvim',
    opt = false,
    requires = {
      { 'ryanoasis/vim-devicons' },
      { 'kyazdani42/nvim-web-devicons' },
    },
    config = function ()
      require('lualine').setup {
        options = {
          theme = "dracula",
          icons_enabled = 1
        }
      }
    end,
  },
  -- lsp
  {
    "neovim/nvim-lspconfig",
  },
  {
    "kabouzeid/nvim-lspinstall",
    opt = true,
    event = 'BufReadPre',
    config = function ()
      require('plugins.lspinstall')
    end
  },
  {
    "hrsh7th/nvim-cmp",
    opt = true,
    event = 'InsertEnter',
    config = function ()
      local cmp = require('cmp')
      cmp.setup {
        snippet = {
          expand = function (args)
            require('luasnip').lsp_expand(args.body)
          end
        },
        mapping = {
          ['<CR>'] = cmp.mapping.confirm {
            behavior = cmp.ConfirmBehavior.Replace,
            select = true
          }
        },
        sources = {
          { name = 'nvim_lsp' },
          { name = 'luasnip' },
          { name= 'buffer' },
        }
      }
    end
  },
  {
    "saadparwaiz1/cmp_luasnip",
    opt = true,
    after = 'nvim-cmp',
  },
  {
    "hrsh7th/cmp-buffer",
    opt = true,
    after = 'cmp_luasnip',
  },
  {
    "hrsh7th/cmp-nvim-lsp",
    opt = true,
    after = 'cmp-buffer',
  },
  {
    "L3MON4D3/luaSnip",
    opt = true,
    after = 'cmp-nvim-lsp',
  },
  {
    'windwp/nvim-autopairs',
    opt = true,
    event = "BufReadPre",
    config = function()
      require('nvim-autopairs').setup {}
    end
  },
}
